package logic.algorithm.aco;

import java.awt.Component;

import javax.swing.JCheckBoxMenuItem;

import logic.algorithm.aco.factory.ACSFactory;
import logic.algorithm.aco.factory.AntSystemFactory;
import logic.algorithm.aco.factory.ElitistASFactory;
import logic.algorithm.aco.factory.MaxMinASFactory;
import logic.algorithm.aco.factory.MetaFactory;
import logic.algorithm.aco.factory.RankBasedASFactory;
import logic.objects.Problem;

public enum Algorithm {
	AntSystem (new AntSystemFactory(),new JCheckBoxMenuItem("Ant System") ),
	RankBasedAS(new RankBasedASFactory(),new JCheckBoxMenuItem("Rank-Based Ant System")),
	ElitistAS(new ElitistASFactory(),new JCheckBoxMenuItem("Elitist Ant System")),
	MaxMinAS(new MaxMinASFactory(),new JCheckBoxMenuItem("Max-Min Ant System")),
	ACS(new ACSFactory(),new JCheckBoxMenuItem("Ant Colony System"));

private final MetaFactory factory;
private final JCheckBoxMenuItem item;
Algorithm (MetaFactory factory,JCheckBoxMenuItem item){
	this.factory=factory;
	this.item=item;}
public JCheckBoxMenuItem getItem() {
	return item;
}
public MetaFactory getFactory() {
	return factory;
}
public String getName() {
	return item.getText();
}

}
